package com.easylinkin.linkappapi.elasticsearch.constant;

/**
 * ES常量枚举类
 *
 * @author zhengwen
 **/
public class EsConstantEnum {

  /**
   * 统计周期类型
   */
  public enum CycleTypeEnum {

    //统计类型  0自定义 1本日 2本周 3本月 4本年
    CUSTOM(0, "自定义"),
    DAY(1, "本日"),
    WEEK(2, "本周"),
    MONTH(3, "本月"),
    YEAR(4, "本年"),
    ;

    CycleTypeEnum(Integer code, String msg) {
      this.code = code;
      this.msg = msg;
    }

    private Integer code;
    private String msg;

    public Integer getCode() {
      return code;
    }

    public String getMsg() {
      return msg;
    }

    /**
     * 根据类型获取枚举对象
     *
     * @param code 类型
     * @return 枚举对象
     */
    public static CycleTypeEnum getEnum(Integer code) {
      for (CycleTypeEnum c : CycleTypeEnum.values()) {
        if (c.getCode().equals(code)) {
          return c;
        }
      }
      return null;
    }

  }

  /**
   * 统计类型
   */
  public enum StatisticsTypeEnum {

    //统计类型 0平均值 1数据量 2求和
    AVE(0, "平均值"),
    COUNT(1, "数据量"),
    SUM(2, "求和");

    StatisticsTypeEnum(Integer code, String msg) {
      this.code = code;
      this.msg = msg;
    }

    private Integer code;
    private String msg;

    public Integer getCode() {
      return code;
    }

    public String getMsg() {
      return msg;
    }

    /**
     * 根据类型获取枚举对象
     *
     * @param code 类型
     * @return 枚举对象
     */
    public static StatisticsTypeEnum getEnum(Integer code) {
      for (StatisticsTypeEnum c : StatisticsTypeEnum.values()) {
        if (c.getCode().equals(code)) {
          return c;
        }
      }
      return null;
    }

  }

  /**
   * todo 这里需要提供下 其他两类型的 RuleTypeId 目前只有 未穿戴反光衣 ruleTypeId =26
   * 需 陈达 提供
   * 智能相机事件类型枚举
   */
  public enum AiCameraRuleType {
//未佩戴安全帽、未穿戴反光衣、明火预警

    NOT_WEARING_A_HELMET("未佩戴安全帽", 14),
    NOT_WEARING_REFLECTIVE_CLOTHING("未穿戴反光衣", 26),
    NOT_WEARING_REFLECTIVE_CLOTHING2("未穿反光衣", 26),
    FIRE_WARNING("明火预警", 27);
    private String ruleName;
    private Integer ruleType;

    public String getRuleName() {
      return ruleName;
    }

    public Integer getRuleType() {
      return ruleType;
    }

    AiCameraRuleType(String ruleName, Integer ruleType) {
      this.ruleName = ruleName;
      this.ruleType = ruleType;
    }
  }

}
